/* 
 * cms，一个基于J2EE架构内容管理系统
 * Copyright © GrayRabbit Co., Ltd. All rights reserved.
 * Department:运营department
 * 更多信息请访问：
 * http://code.google.com/p/gray-rabbit-cms/
 */
package org.grayrabbit.cms.service.dictionary;

import java.util.List;

import org.grayrabbit.cms.entity.Dictionary;
import org.grayrabbit.cms.entity.DictionaryType;
import org.grayrabbit.cms.vo.dictionary.DictionaryBean;

import org.grayrabbit.dao.util.Page;
import org.grayrabbit.service.GenericService;

/**
 * <b>OperLog</b>的service接口

 * @version 1.0,创建时间: 2011-05-16 14:46:47 
 */
public interface DictionaryService extends GenericService {
	/**
	 * 根据主键查询实体
	 * @param dictionaryId
	 * @return
	 */
	Dictionary getDictionary(String dictionaryId);
	/**
	 * 批量删除
	 * @param key
	 */
	void delete(String[] key);
	/**
	 * 删除实体
	 * @param dictionary
	 */
	void delete(Dictionary dictionary);
	/**
	 * 保存实体
	 * @param dictionary
	 */
	void save(Dictionary dictionary);
	/**
	 * 根据bean组装统计查询条件(名称参数)
	 * @param dictionary
	 * @return
	 */
	Page<Dictionary> getPage(DictionaryBean dictionaryBean);
	/**
	 * 填充分页组件的查询：(名称参数)
	 * @param page
	 * @param dictionaryBean
	 */
	void list(Page<Dictionary> page, DictionaryBean dictionaryBean);
	/**
	 * 根据字典类型CODE获取字典LIST
	 * @param dictionaryTypeCode
	 * @return
	 */
	List<Dictionary> getDictionaryListByTypeCode(String dictionaryTypeCode);
	/**
	 * 根据字典KEY获取字典对象
	 * @param dictionaryKey
	 * @return
	 */
	Dictionary getDictionaryByDictionaryKey(String dictionaryKey, String dicTypeCode);
	
	/**
	 * 根据字典KEY获取字典对象List
	 * @param dictionaryKey
	 * @return
	 */
	List<Dictionary> getDictionaryListDictionaryKey(String dictionaryKey, String dicTypeCode);
	/**
	 * 获取所有字典类型
	 * @return
	 */
	List<Dictionary> getAllDictionaryList();
	/**
	 * 对字典数据进行批量操作
	 * @param obj
	 */
	void saveBatch(String dicCode,DictionaryType dicType);
	/**
	 * 对字典数据进行批量删除
	 * @param dicDelCode
	 */
	void deleteBatch(String dicDelCode);
	/**
	 * 根据父ID获取字类
	 * @param parentId
	 * @return
	 */
	List<Dictionary> getAllDictionaryListByParentId(String parentId);
	/**
	 * 获取字典一级子类列表
	 * @param dicTypeCode
	 * @return
	 */
	List<Dictionary> getParentDictionaryList(String dicTypeCode);
	public List<Dictionary>  ftlFindFirstDicsByTypeKey(String key);
	
	public List<Dictionary> getAreaProvinces();
	
	public List<Dictionary> ftlFindSmsContent();
	public List<Dictionary> ftlFindEmailContent();
	
	/**
	 * 根据字典Value获取字典对象的Key
	 * @param dictionaryValue
	 * @return
	 */
	String getDictionaryValue(String dictionaryValue);
	
	/**查找站点区域 、子区域、父区域    仅用于红标签*/
	public List<Dictionary> ftlFindSiteAreas(String areaCode);
	
}